A drop-in replacement of [tokio::time::timeout] which is much more efficient.
Similar to [tokio::time::timeout] but more efficient on busy concurrent IOs where timeouts are
created and canceled very frequently.
This crate provides the following optimizations
- The timeouts lazily initializes their timer when the Future is pending for the first time.
- There is no global lock for creating and cancelling timeouts.
- Timeout timers are rounded to the next 10ms tick and timers are shared across all timeouts with the same deadline.
Benchmark:
438.302µs total, 4ns avg per iteration
v.s. Tokio timeout():
10.716192ms total, 107ns avg per iteration